Neste minicurso, faremos uma introdução a conceitos básicos da estatística descritiva e inferencial. A partir do uso do software R, veremos como manipular conjuntos de dados, elaborar gráficos e obter medidas descritivas de posição, dispersão e contagem. Também serão discutidos conceitos básicos de testes de hipóteses e aplicação prática de alguns testes como teste-t, correlação e qui-quadrado. As aulas contarão com sessões práticas de análise de dados oriundos de estudos linguísticos. Não é preciso familiaridade com o R para participar.
AVISO! Como esse é um curso de carga horária muito reduzida, optei por demonstrar algumas análises práticas com o
R, e, por isso, precisei tomar alguns atalhos ao abordar probabilidades e a parte mais teórica da estatística inferencial. Uma formação sólida em estatística (algo que está muito além de um curso de 9h) passa pelo estudo de probabilidade, distribuições, erro-padrão, intervalo de confiança e outros conceitos que não teremos tempo de abordar aqui. Não pare por aqui! A ideia do curso é despertar sua curiosidade e seu interesse pelo campo da análise quantitativa. Ao fim deste documento há sugestão de materiais suplementares para o estudo de estatística.
Vamos trabalhar os conceitos do curso tentando responder a algumas perguntas que interessam a pesquisas linguísticas.
Existe alguma relação entre quão concreto é o sentido de uma palavra e a sua categoria gramatical?
Existe alguma relação entre o quão concreto é o sentido de uma palavra e o quão fácil é evocar uma imagem mental do seu sentido?
Existe alguma relação entre quão icônica é uma palavra e a sua classe gramatical?
Existe alguma relação entre a idade de aquisição de uma palavra e a sua iconicidade?
Este material foi feito para servir como base às aulas do minicurso ministrado na III Escola de Estudos Linguísticos do GEL, e talvez não funcione bem sozinho. Vou interromper o fluxo durante as aulas para demonstrar alguns detalhes que não estão aqui, de modo a deixar alguns aspectos apresentados mais claros ou a apontar algumas de suas limitações.
Em caso de dúvida, sobretudo acerca de como criar projetos e importar arquivos, consulte no link a seguir os primeiros vídeos do meu curso online de estatística para linguistas:
https://abre.ai/estatistica-linguistas
É preciso ter o R e o RStudio instalados para acompanhar o curso.
Há grande debate sobre a replicabilidade dos achados atuais em Psicologia e outras áreas das ciências humanas como a linguística (veja uma discussão aqui).
Uma das maneiras de resolver esse problema é promover a transparência dos procedimentos de criação de hipóteses, coleta e análise dos resultados experimentais.
Podemos deixar nossos estudos mais transparentes compartilhando nosso conjunto de dados e o modo como os analisamos.
Embora haja diversos programas capazes de realizar análises estatísticas (Excel, SPSS, Minitab), o uso de linguagens de programação apresenta a vantagem de permitir, de maneira fácil, a reprodutibilidade das análises realizadas.
Ao compartilharmos nosso código, é fácil para nossos pares (pareceristas ou não) seguirem todos os passos da nossa análise.
Ao organizarmos nosso código, também lembramos, anos depois, porque tomamos determinadas decisões durante nossa análise.
R é uma das linguagens mais usadas para análise de dados, e provavelmente a mais usada em linguística (há outras, como python e julia). Por isso, é a linguagem que usaremos nesse curso.
Nesse tutorial, usamos o ambiente RStudio para escrever e rodar nossos códigos. Ele é uma interface que permite escrever o código e ver seus resultados em quatro paineis diferentes.
Vamos criar um novo projeto no R, uma pasta onde colocaremos todos os arquivos necessários para esse minicurso.
Abra o RStudio.
Você deverá ver uma tela semelhante à figura seguinte:
Use a função browse para encontrar o espaço no seu computador onde você quer criar a pasta do seu projeto (seta 1 na próxima figura).
Nomeie seu projeto como quiser: eu dei o nome de ElingGEL_2025 (seta 2 na próxima figura).
Crie o projeto (seta 3 na próxima figura)
Você verá que agora o cabeçalho do RStudio mudou, indicando que você está trabalhando a partir da pasta recém criada (seta 1 na próxima figura).
Dentro dessa pasta, você tem agora o seu arquivo de extensão .RProj (seta 2 na próxima figura). Sempre que quiser trabalhar nos arquivos que estão dentro dessa pasta, basta abrir esse projeto.
dados: uma pasta com os conjuntos de dados que serão
usados no curso
ElingGEL2025.r: tutorial que você vai usar para o
curso
ElingGEL2025.html: arquivo com o texto do curso,
para consulta posterior
Volte ao RStudio. Você verá que o painel do canto inferior direito, na aba Files, mostrará os documentos presentes na pasta onde está alocado seu projeto.
ATENÇÃO!! Se os seus arquivos não estiverem na mesma pasta que o arquivo .Rproj recém-criado, você não conseguirá acessar esses arquivos com os códigos deste curso.
Agora a janela do programa está dividida em quatro painéis principais e estamos prontos para começar.
Tomando a imagem anterior como referência, temos:
1 - Canto superior esquerdo: aqui temos o editor de texto. Vamos escrever nossos códigos nesta área. Quando fizer um script novo, você pode criá-lo ao apertar as teclas Ctrl+Shift+N, ou pode selecionar File > New File > R Script no menu. Para salvar, faça o mesmo que você faria para um documento de word (Crtl+Shift+S ou File > Save) e salve sempre dentro do projeto R em que você está trabalhando. Esse arquivo será um documento de extensão .r que poderá ser compartilhado.
2 - Canto inferior esquerdo: é o chamado prompt. É nele que os comandos são rodados. Você mandará executar um comando no editor de texto e a execução ocorrerá nesta janela.
3 - Canto superior direito: possui as abas Environment, History, Connections e Build. A mais importante para este workshop é a aba Environment, onde podemos verificar quais variáveis estão presentes na memória do programa.
4 - Canto inferior direito: possui diversas abas chamadas Files, Plots, Packages, Help e Viewer. É neste painel que veremos os gráficos plotados e os arquivos de ajuda. Em um projeto R, a aba Files mostra os arquivos presentes na pasta.
Nós vamos escrever todos os comandos no canto superior esquerdo e rodá-los com o atalho Ctrl+Enter.
Você verá que algumas linhas de código começam com o símbolo #. Esse símbolo indica que tudo que há ali é um comentário, e portanto o programa não tentará rodá-lo como um código executável.
Se o resultado for algo numérico, ele aparecerá no canto inferior esquerdo; se for um gráfico, aparecerá no canto inferior direito.
O R vem “de fábrica” com algumas funções nativas
instaladas. Por ser um software aberto, a comunidade usuária
desenvolve pacotes para fins específicos e os compartilha para uso.
Um dos pacotes mais usados para manipulação de dados é o
dplyr, e para visualização gráfica é o
ggplot2. Ambos os pacotes integram o
tidyverse, uma coleção de pacotes usados por Hadley
Hickman.
Para instalar esse pacote no seu computador, garanta que haja acesso à internet e rode o código a seguir. Você deve deixar o cursor sobre a linha e apertar CTRL+Enter.
Você só precisa instalar o pacote que vai usar uma vez.
Entretanto, sempre que você abrir o R, precisará
carregar todos os pacotes que pretende usar.
Para carregar o pacote, use a função library()
Se você tentar usar uma função do pacote sem carregá-lo, vai rececer uma mensagem de erro dizendo que o R não conseguiu localizar essa função
IMPORTANTE: Leia as mensagens de erro que o R te dá, pois elas te ajudam a resolver o seu problema.
Para motivar nosso primero encontro, vamos pensar e levantar hipóteses sobre a seguinte questão:
Quando fazemos análises estatísticas, procuramos relação entre variáveis que quantificam os fenômenos estudados.
Operacionalizar uma hipótese de pesquisa sempre passa por quantificar, de alguma maneira, os conceitos que integram essa hipótese.
Por exemplo:
Nessa pergunta, temos a relação entre uma variável x que (suspeitamos) está correlacionada a uma variável y, ambas quantitativas (ver Godoy e Guimarães (2024) para mais detalhes sobre operacionalização de perguntas de pesquisa).
y ~ x
Antes de fazemos qualquer análise estatística, precisamos conhecer os dados coletados. Isso significa fazer uma boa estatística descritiva dos dados.
Precisamos tirar medidas descritivas e visualizar sua distribuição por meio de um gráfico. Vamos começar pela estatística descritiva.
Se eu quero testar a correlação entre uma variável x e uma variável y, eu preciso que as duas estejam corretamente identificadas em colunas diferentes em uma planilha.
A seguir, podemos ver que concretude e categorial gramatical estão codificadas em duas colunas diferentes, o que nos permite relacioná-las posteriormente.
Dicas:
Não use cores para indicar diferenças entre os dados: crie uma variável para isso.
Se sua variável é qualitativa/categórica (isto é, não é um número), como no caso de categoria gramatical, gênero, idioma, etc., não use números para identificá-las: use uma etiqueta simples e de fácil compreensão.
RVamos começar nossas análises com o conjunto de dados
esplex_2025.csv, que está dentro da pasta
dados que você baixou no github do curso.
Esses dados são um subconjunto dos dados usados em Godoy (2021). Conjugam métricas de categoria gramatical, concretude, imageabilidade e frequência dos 100 nomes e 100 verbos mais frequentes do conjunto EsPal (Duchon et al. 2013), que agrega medidas linguísticas e psicolinguísticas para palavras do espanhol.
Importamos esse conjunto de dados para o R e
inspecionamos suas variáveis.
## carregando conjunto de dados
esplex <- read.csv("dados/esplex_2025.csv")
## inspecionando o conjunto de dados
str(esplex)## 'data.frame': 200 obs. of 5 variables:
## $ palavra : chr "abrir" "acabar" "aceptar" "actuar" ...
## $ categoria : chr "VERBO" "VERBO" "VERBO" "VERBO" ...
## $ concretude : num 4.19 3.97 4.09 3.41 3.66 ...
## $ imageabilidade: num 5.31 4.47 3.84 4 3.71 ...
## $ frq : num 49.1 48.2 62.3 56.9 414.5 ...
Primeiro, você precisa garantir que as variáveis estão organizadas em colunas (vetores) em um dataframe.
Nesse conjunto de dados, temos as seguintes variáveis:
palavra: palavra do espanhol
categoria: categoria gramatical da palavra
concretude: nota de concretude da palavra
img: nota de imageabilidade da palavra
frq: frequência por milhão da palavra.
A função str() nos informou que a variável
categoria é formada por caracteres (chr),
enquanto concretude é numérica (num).
Para ver os níveis de uma variável categórica, a função
unique() é bastante útil.
Essa função retorna os valores únicos de uma variável.
O símbolo $ é usado para identificar a coluna que se
pretende acessar dentro de um dataframe.
## [1] "VERBO" "NOME"
## [1] 4.190 3.971 4.094 3.409 3.656 6.113 3.119 5.480 3.059 3.811 4.384 3.100
## [13] 3.711 2.539 3.403 4.194 3.530 2.625 4.773 3.860 5.631 2.438 4.890 5.339
## [25] 5.590 3.898 4.165 3.314 3.946 3.277 3.825 3.748 3.921 3.483 3.819 3.834
## [37] 5.119 3.161 5.713 3.843 3.739 4.247 3.707 3.265 3.261 4.897 2.738 3.245
## [49] 2.522 4.029 3.826 3.691 4.960 4.024 5.380 3.416 4.030 3.933 3.568 4.910
## [61] 4.280 3.759 5.337 4.543 3.904 3.110 3.299 3.793 3.973 3.654 4.640 4.122
## [73] 4.183 5.903 3.810 2.308 5.286 2.809 2.171 5.683 3.809 5.398 2.996 4.563
## [85] 3.434 3.353 3.835 4.017 5.856 4.732 3.895 3.543 4.045 4.004 4.226 6.212
## [97] 4.861 1.985 6.315 2.321 6.293 2.488 3.378 5.256 5.600 3.823 2.481 6.111
## [109] 4.089 3.194 6.546 4.262 5.231 3.578 5.814 4.229 5.969 5.044 4.401 3.448
## [121] 5.172 3.741 6.079 5.484 2.349 3.757 3.586 3.503 3.137 3.660 3.298 3.989
## [133] 3.485 4.412 3.361 3.752 4.016 3.674 5.591 3.872 2.937 2.837 3.217 4.997
## [145] 3.438 3.754 5.369 4.464 4.901 2.976 4.667 4.133 2.582 3.954 3.650 4.824
## [157] 2.932 4.293 4.802 6.271 3.447 3.617 3.906 3.632 3.669 4.819 3.145 2.674
## [169] 4.369 2.212 2.843 4.147 5.065 3.603 3.433 3.291 5.680 2.186 3.182 4.449
## [181] 4.965 3.216 3.986 6.085 2.401 2.245 3.463 4.419 3.822 5.676 4.918 4.059
## [193] 4.242
Para variáveis numéricas, costumamos reportar as medidas que as descrevem: amplitude, média, mediana, moda, desvio-padrão, desvio interquartílico etc..
A mais conhecida delas é a média.
A média é uma medida de tendência central que informa o valor médio de um conjunto de valores.
## [1] 4.035555
Será que as notas médias de concretude para cada uma das categorias gramaticais é a mesma?
Precisamos agrupar os dados por categoria e extrair essas medidas.
Para fazer isso, vamor usar ferramentas do dplyr, um
conjunto de funções que já está incluso no pacote
tidyverse.
O código utilizado para fazer estas manipulações é, em geral, mais limpo e enxuto do que os códigos tradicionais do R.
O dplyr possui funções bastante simples, mas que se usadas recursivamente, produzem resultados bastante variados.
As funções que vamos usar são:
group_by(): agrupa dados para realizar
operações
summarise(): resume múltiplos valores a apenas
um
Vamos começar por esses dois últimos comandos.
O código abaixo faz três operações
Linha 1: toma o dataframe esplex
Linha 2: agrupa seus dados por categoria
Linha 3: resume seus resultados de acordo com o que se pede
## # A tibble: 2 × 1
## categoria
## <chr>
## 1 NOME
## 2 VERBO
No caso acima, não definimos os argumentos de
summarise(), então essa função não nos retornou nenhum
valor.
Vamos pedir para ele dar uma medida resumida de concretude: a média.
## # A tibble: 2 × 2
## categoria `mean(concretude)`
## <chr> <dbl>
## 1 NOME 4.23
## 2 VERBO 3.84
Os resultados foram o que você esperava?
Também podemos pedir o resumo de quantas observações há por
categoria no conjunto de dados; isso é feito com a função
n(). Vemos que há 100 observações por categoria.
esplex %>% ## Linha 1
group_by(categoria) %>% ## Linha 2
summarise(mean(concretude), ## Linha 3
n()) ## # A tibble: 2 × 3
## categoria `mean(concretude)` `n()`
## <chr> <dbl> <int>
## 1 NOME 4.23 100
## 2 VERBO 3.84 100
esplex %>% ## Linha 1
group_by(categoria) %>% ## Linha 2
summarise(media = mean(concretude), ## Linha 3
n.obs = n()) ## # A tibble: 2 × 3
## categoria media n.obs
## <chr> <dbl> <int>
## 1 NOME 4.23 100
## 2 VERBO 3.84 100
Você deve ter visto que, ao fim de cada linha, usamos a função
%>%.
A função %>% se chama pipe e serve para levar o
output de uma linha como input para a linha seguinte.
Para não precisar ficar digitando os três caracteres sempre que
quiser usar o pipe, use o atalho: SHIFT+CTRL+M
Ananias (2024) tinha por hipótese inicial que existe uma relação entre iconicidade e categoria gramatical.
Para testar essa hipótese, a autora coletou notas de iconicidade (numa escala de -5 a 5) para mais de 500 palavras do português.
Segundo a autora, onomatopeias e interjeições devem ser as palavras mais icônicas do léxico. Na sequência, devemos ver adjetivos, pois essa classe costuma evocar categorias perceptuais (brilho, cor, forma, tamanho) relacionadas a simbolismos sonoros. Por fim, havia a hipótese de que verbos e substantivos teriam mais ou menos as mesmas notas de iconicidade.
O arquivo ananias2024_subconjunto.csv é um subconjunto
dos seus dados. Nele, você tem as seguintes colunas:
– palavra: palavra do português
– categoria: categoria gramatical da palavra
– icon: nota média de iconicidade por palavra
– producao.30m: porcentagem de crianças de 30 meses que
produziam a palavra (segundo dados do MacArthur-Bates Communicative
Development Inventory para o português)
Você deverá:
Importar o conjunto de dados.
Conferir quais são os níveis da variável categoria gramatical.
Extrair a média de iconicidade por categoria gramatical e o número de observações.
Responder: qual a categoria gramatical com a maior média? E a menor?
Responder: há o mesmo número de observações por categoria?
Será que a média é um bom indicativo dos nossos dados?
Será que esses valores estão bem espalhados entre as notas possíveis, que iam de 1 a 7?
O histograma serve como uma representação aproximada da distribuição da variável que estamos analisando.
Para construí-lo, uma variável quantitativa é dividida em intervalos.
## [1] 1.985 2.171 2.186 2.212 2.245 2.308 2.321 2.349 2.401 2.438
Medidas de dispersão mostram como os dados estão distribuídos.
Duas medidas de dispersão muito comuns são amplitude e desvio-padrão.
A amplitude é definida como a diferença entre o máximo e o mínimo em um conjunto de dados.
## [1] 1.715 6.788
## [1] 5.073
### calculando o desvio padrao
# calculando diferenca entre media e cada observacao
diferenca <- mean(esplex$imageabilidade)-esplex$imageabilidade
# soma dos quadrados das diferencas
soma.quadrados <-sum(diferenca^2)
# divisao da soma dos quadrados por n-1
divisao<-soma.quadrados/(length(esplex$imageabilidade)-1)
# raiz quadrada da divisao = desvio - padrao
desvio.padrao <- sqrt(divisao)
# desvio padrao de imageabilidade
desvio.padrao## [1] 1.173241
## [1] 1.173241
Extraia o valor do desvio-padrão de cada classe gramatical para as notas de concretude no conjunto de dados esplex.
Você consegue identificar a qual categoria gramatical cada um dos histogramas a seguir pertence com base nos seus desvio-padrão?
Imagine que você é um agente de turismo e recebe a seguinte demanda:
Indicar destino de férias para três grupos de 50 pessoas (homens e mulheres), com média de aproximadamente 32 anos.
Quais suas sugestões?
Quando lidamos com distribuições assimétricas com caudas longas à esquerda ou à direita, é comum reportarmos a mediana, uma outra medida de tendência central.
A mediana que divide a amostra na metade, ou seja, 50% dos valores da amostra estão abaixo do valor da mediana, enquanto os outros 50% estão acima.
## [1] 3.1 4.2 5.5 7.2 7.4
## [1] 5.5
## [1] 5.48
## [1] 3.1 4.2 5.5 7.4 70.2
## [1] 5.5
## [1] 18.08
Comparar valores de média e mediana é um bom indicativo de saber se a cauda da distribuição é simétrica ou se pende mais para a direita ou para a esquerda.
Algumas medidas em linguística quase sempre têm uma distribuição com cauda longa à direita.
Extraia as médias e medianas de concretude, imageabilidade e
frequência por categoria no conjunto de dados
esplex.
Comparando esses valores, como saber qual distribuição é mais simétrica e qual é menos simétrica? (lembrando que isso é apenas um primeiro indício, que deve ser conferido posteriormente com análise gráfica dos dados)
O histograma nos informa a forma geral da distribuição dos dados. O boxplot adiciona informações importantes, como a mediana e os quartis.
O quartil divide a amostra de 4 partes, ou seja, cada quartil compreende 25% das observações.
O gráfico a seguir traz os boxplot de frequência por categoria.
Podemos ver nele a distribuição assimétrica dos dados.
Ajuda um pouco melhor a visualização se representarmos as observações dos dados através de pontos.
Também vamos mudar a cor para distinguir melhor os dados.
A medida de dispersão relativa aos quartis de uma distribuição é o desvio inter-quartílico.
Essa medida é a diferença entre \(Q_1\) e \(Q_3\).
# medidas de posicao e dispersao para frq
esplex %>%
group_by(categoria) %>%
summarise(media = mean(frq), sd(frq), mediana = median(frq), desvio.iqr = IQR(frq))## # A tibble: 2 × 5
## categoria media `sd(frq)` mediana desvio.iqr
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 NOME 394. 193. 317. 216.
## 2 VERBO 104. 98.9 69.3 51.9
As linhas que saem dos extremos das caixas têm valor da mediana e mais ou menos 1.5 desvio-interquartílico.
Os pontos fora desse intervalo são chamados outliers
Não se deve remover outlier da sua distribuição acriticamente.
Retirá-los simplesmente muda sua distribuição.
Pergunte-se se podem ser erros de medida.
Faça uma escolha motivada pelo fenômeno estudado, e não pela mera aplicação acrítica de fórmulas matemáticas.
Nesse curso aprenderemos a fazer gráficos com o pacote
ggplot2.
Foi criado por Hadley Wickham em 2005, baseado no livro Grammar of Graphics, de Leland Wilkinson, mas sua primeira versão só esteve disponível para o público em 2007.
A ideia principal é criar gráficos como se eles fossem frases de uma língua, onde cada elemento do gráfico é uma palavra (eu prefiro uma metáfora usada pela profa. Livia Oushiro: é uma maneira de pintar um quadro, uma camada de cada vez).
Os gráficos criados com esta ferramenta são, em geral, mais bonitos do que os gráficos tradicionais do R ou de outras ferramentas similares.
O ggplot2 exige que os dados a serem plotados estejam em um data frame (geralmente as pesquisas em linguística trabalham com planilhas, e essas planilhas são dataframes).
Não é possível plotar diretamente os dados presentes em uma matriz ou um vetor.
Sempre teremos que transformar os dados para dataframe ou construir um dataframe com os dados que possuímos.
A sintaxe básica do ggplot se dá através do comando abaixo, que define duas características importantes de um gráfico:
Como a categoria gramatical afeta a distribuição de notas de concretude?
## [1] "palavra" "categoria" "concretude" "imageabilidade"
## [5] "frq"
Se você tentou rodar o código acima, recebeu uma mensagem de erro e um gráfico em branco.
O erro ocorreu porque é preciso informar a geometria do gráfico, ou seja, o modo como queremos dispôr nossa informação: colunas, linhas pontos etc.
A geometria de um gráfico do tipo boxplot é geom_boxplot().
Dados, estética e geometria são três camadas obrigatórias de todo gráfico.
# adicionando a camada de geometria, indicando geometria requerida
ggplot(esplex, aes(x = categoria, y = concretude))+
geom_boxplot()Podemos deixar o gráfico mais bonito.
Vamos deixar os pontos mais transparentes.
Vamos também mudar o fundo, para que ele fique branco. Esse último passo é feito mexendo no tema do gráfico.
# ajustes na aparencia: fundo branco (tema) e alpha
ggplot(esplex, aes(x = categoria, y = concretude))+
geom_boxplot(alpha = 0.5)+
theme_bw()Você também pode colorir o seu gráfico.
Se é uma coloração estética, informe na geometria.
# ajustes na aparencia: mudando cor
ggplot(esplex, aes(x = categoria, y = concretude))+
geom_boxplot(alpha = 0.5, color = "red")+
theme_bw()aes()# ajustes na aparencia: ligando cor a variavel
ggplot(esplex, aes(x = categoria, y = concretude, color = categoria))+
geom_boxplot(alpha = 0.5)+
theme_bw()color =, você pode usar fill =.
Para gráficos que têm uma área a ser preenchida, como é o caso do
boxplot, isso vai pintar dentro das linhas.# ajustes na aparencia: ligando cor a variavel (fill)
ggplot(esplex, aes(x = categoria, y = concretude, fill = categoria))+
geom_boxplot(alpha = 0.5)+
theme_bw()geom_histogramfacet_wrap() ao fim do
gráfico.### histograma de concretude por categoria gramatical
ggplot(esplex, aes(concretude))+
geom_histogram()+
theme_bw()+
facet_wrap(~ categoria)lightblue).As distribuições são normais?
Qual a categoria com maior iconicidade?
Qual a categoria com maior amplitude?
Agora faça o código que replique o gráfico que acabamos de ver.
Lembre-se: o boxplot mascara o tamanho amostral. Ao vermos o gráfico gerado a partir dos dados de Ananias (2024), não temos a informação de que o N de onom+int é de apenas 14, enquanto o N de substantivos é de 305. Sempre combine exploração gráfica com extração de medidas descritivas dos dados.
Medidas de tendência central (ou posiçãao)
média / mean()
mediana / median()
Medidas de dispersão
desvio-padrão / sd()
desvio-interquartílico / IQR()
Funções úteis do R:
read.csv()
%>%
group_by()
summarise()
Vimos que a média de concretude de nomes é superior à média de concretude de verbos.
Não podemos parar pode aqui?
Ao fazermos análise estatística, estamos trabalhando com probabilidades
Ao lançarmos 10 moedas, qual a p(cara) e a p(coroa)?
## [1] 0.2050781
## [1] 0.1171875
## [1] 0.009765625
Quando fazemos estatística inferencial, vemos a probabilidade dos nossos dados considerando uma distribuição de probabilidades já conhecida.
Quando realizamos uma pesquisa, frequentemente o nosso objetivo é saber se podemos generalizar os dados daquela amostra para a população.
Em linguística, é muito raro coletarmos dados de toda a população; por isso, trabalhamos com amostras.
Usamos estimadores da amostra (\(\overline{X}\) e \(S\)) para inferir os parâmetros de uma população (\(\mu\) e \(\sigma\)).
Como podemos ter certeza que os estimadores da amostra correspondem aos parâmetros da população?
Selecione a linha abaixo com o cursor para ver a resposta
A rigor, não temos como estar absolutamente certos sobre os parâmetros de uma população.
Sempre trabalhamos com incertezas.
A estatística inferencial nos permite quantificar a nossa incerteza.
Que características de uma amostra nos deixam mais incertos?
Imagine que temos dois métodos de ensino para ensinar produção de texto, A e B
Achamos que um dos métodos pode ser melhor que o outro.
Pegamos duas amostras de estudantes com desempenhos semelhantes: para um dados aulas com o método A, para outro damos aulas com o método B.
Amosta de \(n\) estudantes em cada grupo.
Média do grupo A na prova: 400 pontos.
Média do grupo B na prova: 525 pontos.
Sabemos que \(\overline{X}_A\) ≠ \(\overline{X}_B\)
Quão certos estamos que \(\mu_A\) ≠ \(\mu_B\)?
Vamos imaginar três cenários que descrevem o experimento descrito.
Os triângulos correspondem às médias, os pontos correspondem aos alunos que participaram do experimento.
Tente descrever o que esses cenários têm de comum e o que eles têm de diferente.
(a) Cenário 1
(b) Cenário 2
(c) Cenário 3
Diferença entre as médias
Dispersão
Tamanho amostral
Esses ingredientes são a base de algumas medidas que quantificam nossa incerteza sobre: tamanho do efeito, erro-padrão, intervalo de confiança…
Por isso é tão importante conhecer e reportar as medidas descritivas dos nossos dados.
O erro-padrão da média é uma medida da variabilidade dessa medida estatística.
Se o erro-padrão da média for pequeno, espera-se que futuras amostragens terão pouca variabilidade nessa medida.
Se o erro-padrão for alto, é esperado que a variabilidade observadas em outras amostragens seja também seja elevada.
Uma das fórmulas para cálculo do \(SE\) da média é a seguinte:
\[\begin{equation} SE = \frac{S}{\sqrt{N}} \end{equation}\]
Ter um SE menor nos ajuda a confiar mais na nossa amostra.
O que acontece com o SE quando o N aumenta?
O que acontece com o SE quando o S aumenta?
A seguir, temos a medida de SE das amostras de cada cenário.
Cenário 1: 4.66
Cenário 2: 10.4
Cenário 3: 55.41
Que medida faz com que SE do Cenário 2 seja maior que o do Cenário 1?
Que medida faz com que a SE do Cenário 3 seja tão maior que os do Cenário 1 e Cenário 2?
\[\begin{equation} SE = \frac{S}{\sqrt{N}} \end{equation}\]
Temos dois dos nossos ingredientes aqui:
Dispersão
Tamanho amostral
\[\begin{equation} t = \frac{\overline{X}_1 - \overline{X}_2}{SE} \end{equation}\]
O que acontece com \(t\) se a diferença entre as médias aumenta?
O que acontece se \(t\) se o SE aumenta?
O valor-\(t\) resulta de medidas que reúnem nossos três ingredientes de incerteza.
Qual dos três cenários terá um menor valor t?
E qual terá o maior valor t?
Selecione as linhas abaixo com o cursor para ver a resposta:
Cenário 1: t = -43.58
Cenário 2: t = -6.63
Cenário 3: t = -1.21
Se a diferença entre as médias for 0, isto é, se os dois grupos que estamos contrastando têm a mesma média, qual será o valor de t?
O que aumenta a nossa confiança de que há diferença entre dois grupos: um t maior ou um t menor?
Calcular o valor t é um dos passos necessários para realizarmos um teste de hipótese.
O que estamos querendo ver aqui? Se Grupo A e Grupo B são estatisticamente diferentes.
Quando fazemos uma análise inferencial a partir de amostras, fazemos um teste de hipóteses para inferir a probabilidade de as amostras pertencerem à mesma população (i.e., a probabilidade de não haver diferença entre elas)
Nunca testamos a hipótese de que as duas amostras são de duas populações diferentes
Partimos sempre da hipótese de que as duas amostras são da mesma população, e realizamos um teste para saber quão provável é essa hipótese dados os estimadores da nossa amostra
Chamamos de hipótese nula a hipótese de que não há diferença entre os dois grupos contrastados (i.e., eles vêm de uma mesma população).
O símbola da Hipótese Nula é \(H_{0}\)
No caso do nosso exemplo, podemos definir a \(H_{0}\) da seguinte maneira:
\[H_{0}: \mu_A = \mu_B\] ou \[H_{0}: \mu_A - \mu_B = 0\]
A Hipótese Alternativa, oposto da \(H_{0}\), pressupõe que há diferença entre os grupos contrastados.
O símbola da Hipótese Alternativa é \(H_{A}\)
No caso do nosso exemplo, podemos definir a \(H_{A}\) da seguinte maneira:
\[H_{A}: \mu_A \neq \mu_B\] ou \[H_{A}: \mu_A - \mu_B \neq 0\]
Quando fazemos o tipo de estatística frequentista que temos aqui, todas as nossas inferências são feitas tomando por base a hipótese nula definida para uma população.
A partir dessa hipótese, coletamos dados de nossa amostra e fazemos testes que nos dizem quão incompatível é essa amostra pressupondo que a hipótese nula seja verdadeira (no nosso caso, presumindo que, de fato, \(\mu_A - \mu_B = 0\) ).
Portanto, testes estatísticos do tipo que descrevemos aqui não nos dizem nada sobre a hipótese alternativa.
Os nossos próximos passos devem ser os seguintes:
– Calcular o valor \(t\) na comparação das duas amostras (nos três cenários)
– Conferir a probabilidade desse valor dada a \(H_0\)
Qual a probabilidade de eu tirar o número 6 com 1 lançamento de dado de 6 faces?
Distribuição de probabilidades do valor t pressupondo a \(H_{0}\) (no nosso caso, que não há diferenças entre os grupos).
A distribuição muda de acordo com o n.
A área total debaixo da curva tem p = 1
É possível ver que o valor mais comum de \(t\) dada a \(H_{0}\) é ZERO. Isso faz sentido: se não há diferença entre os grupos, a diferença entre médias tende a ser igual a zero.
A probabilidade de \(t\) ser igual ou maior que 0 é de 0.5.
A probabilidade de \(t\) ser igual ou menor que 0 é de 0.5.
Vamos lembrar que, no Cenário 3, o \(t\) é igual a -1.21.
Vejamos abaixo a probabilidade de um valor \(t\) tão ou mais extremo que esse valor para uma amostra de \(n = 4\).
Probabilidade de um \(t\) de +/-1.21 ou mais extremo para uma amostra de \(n = 4\) é igual a é de 0.44, dada a hipótese nula.
Ou, para \(t\) = -1.21 com um \(n\) = 4, \(p\) = 0.44
Aqui, estamos considerando +/ -1.21 porque nossa hipótese alternativa era de que \(\mu_{A}\) é diferente de \(\mu_{B}\), mas não definimos se seria maior ou menor. Por isso, olhamos o efeito nas duas caudas da distribuição.
Vamos ver a mesma situação para os outros cenários.
Lembremos que
– Cenário 1: \(t\) = -43.58
– Cenário 2: \(t\) = -6.63
A probabilidade de \(t\) no Cenário 1 é menor que 2,2e-16
A probabilidade de \(t\) no Cenário 2 é menor que 3,167e-10
Isso é muito ou pouco? O que fazemos com isso?
Probabilidade de um valor \(t\) (ou de outra estatística) dada a \(H_0\).
É interpretado a partir de um nível de significância (\(\alpha\)).
Geralmente, o \(\alpha\) assumido na linguística e áreas adjacentes é de 0.05.
Se p > \(\alpha\), não rejeitamos \(H_0\)
Se p < \(\alpha\), rejeitamos a \(H_0\)
Probabilidade de um \(t\) de -1.21 ou mais extremo para uma amostra de \(n = 4\) é igual a é de 0.44.
Ou, para \(t\) = -1.21 com um \(n\) = 4, \(p\) = 0.44
REJEITAMOS A HIPÓTESE NULA
Para o Cenário 1 e o Cenário 2, podemos rejeitar a hipótese nula?
O valor p não diz nada sobre a \(H_A\).
Um valor p de 0,3 não indica que a \(H_A\) tem 70% chance de estar correta e tampouco que a \(H_0\) tem 30% chande de estar correta.
Não rejeitar a \(H_0\) não é o mesmo que dizer que ela é verdadeira.
Rejeitar a \(H_0\) não é o mesmo que dizer que \(H_A\) é verdadeira.
RVamos fazer um teste-t para os três cenários que temos.
Primeiro vamos importar os três conjuntos de dados.
## importando conjuntos de dados
cenario1 <- read.csv("dados/cenario1.csv")
cenario2 <- read.csv("dados/cenario1.csv")
cenario3 <- read.csv("dados/cenario1.csv")Todos os dados estão organizados da mesma maneira.
Vamos dar uma olhada só nos dados do cenário 1 para ver como as variáveis estão codificadas
## metodo notas
## 1 A 381
## 2 A 394
## 3 A 405
## 4 A 377
## 5 A 404
## 6 A 401
## 7 A 402
## 8 A 422
## 9 A 376
## 10 A 425
Agora vamos realizar um teste-t para ver se a média das notas muda em função do método de ensino.
Usamos a função t.test()
A sintaxe básica para dizer ‘y muda em função de x’ é
y ~ x.
##
## Welch Two Sample t-test
##
## data: notas by metodo
## t = -43.577, df = 184.06, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group A and group B is not equal to 0
## 95 percent confidence interval:
## -130.6593 -119.3407
## sample estimates:
## mean in group A mean in group B
## 400 525
Realizamos um teste-t para comparar as notas dos métodos A e B. O resultado indicou que a diferença entre as médias é estatisticamente significativa (t(184.06) = -43.58, p < 0.0001)
##
## Welch Two Sample t-test
##
## data: notas by metodo
## t = -43.577, df = 184.06, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group A and group B is not equal to 0
## 95 percent confidence interval:
## -130.6593 -119.3407
## sample estimates:
## mean in group A mean in group B
## 400 525
##
## Welch Two Sample t-test
##
## data: notas by metodo
## t = -43.577, df = 184.06, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group A and group B is not equal to 0
## 95 percent confidence interval:
## -130.6593 -119.3407
## sample estimates:
## mean in group A mean in group B
## 400 525
Ontem comparamos a nota de concretude de nomes e verbos a partir do
conjunto de dados esplex.csv.
Nossa pergunta de pesquisa era a seguinte:
> Será que a percepção de concretude de uma palavra é afetada por sua classe gramatical?
Você deverá realizar um teste de hipóteses para responder essa pergunta.
Defina a \(H_0\) e a \(H_A\) para seu teste.
Faça um teste-t para comparar a média dos dois grupos.
É possível rejeitar a hipótese nula?
Teste de hipóteses:
Assumimos a \(H_0\)
Calculamos uma estatística (nesse caso, t) a partir das amostras coletadas
Vemos a probabilidade dessa estatística calculada dada a \(H_0\): esse é o nosso valor \(p\)
Quando eu decido que probabilidade é um valor pouco provável dada a \(H_0\)?
Funções úteis do R
teste.t()Vamos nos fazer uma nova pergunta sobre os dados do conjunto
esplex:
Já coletamos médias de concretude e imageabilidade. Agora vamos inspecionar essa relação graficamente.
Se você ainda não importou, importe o conjunto de dados.
## importar dados (se ainda não tiver importado)
esplex <- read.csv("dados/esplex_2025.csv")
str(esplex)## 'data.frame': 200 obs. of 5 variables:
## $ palavra : chr "abrir" "acabar" "aceptar" "actuar" ...
## $ categoria : chr "VERBO" "VERBO" "VERBO" "VERBO" ...
## $ concretude : num 4.19 3.97 4.09 3.41 3.66 ...
## $ imageabilidade: num 5.31 4.47 3.84 4 3.71 ...
## $ frq : num 49.1 48.2 62.3 56.9 414.5 ...
Já vimos anteriormente como criar gráficos no ggplot.
Vamos relembrar a sintaxe básica:
# adicionando a camada de geometria, indicando geometria de pontos
ggplot(esplex, aes(x = concretude, y = imageabilidade))Se você tentou rodar o código acima, recebeu uma mensagem de erro.
O erro ocorreu porque é preciso informar a geometria do gráfico.
A geometria de um gráfico de dispersão (adequado para duas
variáveis numéricas) é geom_point.
Lembrando: dados, estética e geometria são três camadas obrigatórias de todo gráfico.
# adicionando a camada de geometria, indicando geometria de pontos
## alterando tema e o alpha (transparencia) dos pontos
ggplot(esplex, aes(x = concretude, y = imageabilidade))+
geom_point(alpha = 0.5)+
theme_bw()Parece haver alguma relação entre as variáveis?
Como você a descreveria?
Ananias (2024) tinha por hipótese inicial que a iconicidade facilita a aquisição lexical; portanto, palavras aprendidas mais cedo tendem a ser mais icônicas.
Vamos relembrar aqui as colunas de
ananias2024_subconjunto.csv:
– palavra: palavra do português
– categoria: categoria gramatical da palavra
– icon: nota média de iconicidade por palavra
– producao.30m: proporção (de 0 a 1) de crianças de 30
meses que produziam a palavra (segundo dados do MacArthur-Bates
Communicative Development Inventory para o português). Quanto maior
a proporção, mais cedo se aprende aquela palavra.
Desenhe um gráfico que correlacione iconicidade e idade de aquisição (operacionalizada a partir da proporção de crianças de 30 meses que produziam a palavra).
Analisando o gráfico, você consegue ver alguma tendência específica na relação entre as duas variáveis?
O passo a passo que você deve seguir é:
Importar o conjunto de dados para o RStudio.
Conferir as variáveis e seus nomes.
Desenhar o gráfico com o ggplot.
Podemos calcular um coeficiente de correlação entre duas variáveis numéricas.
Para populações, o símbolo desse coeficiente é \(\rho\); já a correlação amostral é representada por \(r\).
O valor de \(r\) varia de -1 a 1 e indica duas coisas:
– a direção da relação entre as duas variáveis
– a força da correlação
A seguir podemos ver gráficos indicando correlações de diferentes valores.
Valores negativos mostram uma correlação negativa entre variáveis (o aumento de valor em uma variável é acompanhado pela diminuição de valor em outra variável).
Valores positivos mostram uma correlação negativa entre variáveis (o aumento de valor em uma variável é acompanhado pela aumento de valor em outra variável).
Quanto mais próximo dos valores extremos (-1 ou 1), mais forte a correlação.
Um valor de \(r\) alto não é indicativo de resultado significativo: essa medida não leva em conta características como o tamanho da amostra, por exemplo.
Considerando os gráficos que fizemos anteriormente a partir de
esplex.csv e ananias2024_subconjunto.csv, você
diria que os \(r\) associados a cada
caso são positivos ou negativos?
Qual r tem maior valor absoluto?
cor() retorna o coeficiente \(r\) para uma comparação de duas
amostras.## [1] 0.7798876
Extraia o coeficiente de correlação entre idade de aquisição e
concretude dos dados de ananias2024_subconjunto.csv.
O valor \(r\) é calculado para relações lineares entre duas variáveis.
Isso significa que, no intervalo analisado, mudanças em x causariam o mesmo efeito em y independente do valor dessa última variável.
Em bom português: podemos acompanhar as relações x e y com uma linha (se os pontos caem todo sobre a linha, o valor de \(r\)) é 1 ou -1.
É muito importante analisar graficamente seus dados, pois o \(r\) pode não ser uma boa medida para relações não lineares.
\[H_{0}: \rho = 0\]
\[H_{A}: \rho \neq 0\]
Do mesmo jeito que o teste-t considera tamanho amostral e dispersão para determinar a probabilidade da diferença entre médias dada a \(H_0\), o teste de correlação vai considerar tamanho amostral e dispersão para determinar a probabilidade do \(r\) observado dada a \(H_0\).
A função cor.test() realiza o teste de
hipótese.
##
## Pearson's product-moment correlation
##
## data: esplex$imageabilidade and esplex$concretude
## t = 17.533, df = 198, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.7189373 0.8289358
## sample estimates:
## cor
## 0.7798876
O resultado nos permite rejeitar a \(H_0\).
Escrevemos os nossos resultados:
Realizamos um teste de correlação entre as notas de imageabilidade e concretude. A correlação entre as duas variáveis foi positiva (\(r\) = 0.78 ) e significativa (\(t\)(198) = 17.53, p< 0.0001)
A partir dos dados ananias2024_subconjunto.csv, teste a
hipótese de que palavras mais icônicas costumam ser aprendidas mais
facilmente pelas crianças.
Foi possível rejeitar a \(H_0\)?
Os testes que vimos neste curso são confiáveis apenas se observadas algumas condições.
Normalidade dos dados: A variáveis estão
normalmente distribuídas: isso corresponde a dizer que as variáveis são
mais ou menos simétricas, como vimos para concretude e iamgeabilidade
(você pode fazer um histograma de icon e
producao.30m, de ananias2024_subconjunto.csv,
para ver que isso também se aplica a essas variáveis)
Independência dos dados: Os dados são independentes entre si
No caso da violação da normalidade, é possível buscar testes não-paramétricos ou operar alguma transformação não-linear nos dados (a mais comum em linguística é a logaritmica, para dados com cauda longa à direita).
Para violação da independência dos dados (mais comum em estudos experimentais na linguística), o recomendado é buscar uma análise por meio de modelos mistos.
De modo geral, o teste-t e o teste de correlação são boas maneiras de se entender como funciona um teste de hipóteses. Na prática, quem trabalha com metodologias quantitativa precisará buscar testes mais complexos por meio de modelos lineares (tanto teste-t quanto teste de correlação são casos específicos de modelos lineares).
Vamos simular uma amostra com 20 observações
Essa amostra será gerada assumindo \(\mu\) = 0, \(\sigma\) = 1
## [1] -0.8803930 0.7782903 0.7686086 -1.1541475 -1.4466186 -1.2292040
## [7] 2.1449310 -0.3221494 -1.5072634 -0.4351767 -1.2111671 -0.1480669
## [13] 0.6123420 0.6699250 0.5577712 -1.5671498 -0.3107193 -1.6817825
## [19] 2.2020142 -0.8912376
##
## Welch Two Sample t-test
##
## data: rnorm(20) and rnorm(20)
## t = 1.0596, df = 37.089, p-value = 0.2962
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.2957227 0.9441971
## sample estimates:
## mean of x mean of y
## 0.1835542 -0.1406830
Jamais poderemos ter certeza de que rejeitamos a \(H_0\) quando ela não deveria ser rejeitada.
– Erro do Tipo I: falso positivo
– Erro do Tipo II: falso negativo
Aumento no número de testes inflaciona taxa de Erro do Tipo I
Para evitar: correção de valor-p por métodos como Bonferroni, FDR, Tukey…
Estatística é só uma ferramenta, e não um oráculo
É importante conhecer os limites do que um teste estatístico pode dizer
Abrace a incerteza!
Faça mais experimentos (de replicação ou complementares)
Tudo o que vimos hoje faz sentido dentro de um tipo de estatística chamada frequentista
O procedimento básico é (a) calcular uma medida estatística cuja distribuição é conhecida (como a \(t\)); (b) calcular quão provável é o valor da estatística obtida dada a hipótese nula
Há outras maneiras de se fazer cálculos estatísticos (como a estatística bayesiana)
Para um tutorial sobre manipulação e visualização gráfica de dados:
Para uma introdução mais sólida a análises estatísticas (feita para linguistas):
Oushiro, L. (2022). Introdução à Estatística para Linguistas. Editora da Abralin. Disponível em https://editora.abralin.org/publicacoes/introducao-a-estatistica-para-linguistas/
Gries, S. (2019). Estatística com R para a linguística. Belo Horizonte: FALE/UFMG. Disponível em http://www.letras.ufmg.br/site/e-livros/Estat%C3%ADstica_com_R_Gries_%20Mello_et%20al.pdf.
Para uma introdução à estatística através de modelos lineares:
Winter, B. (2019). Statistics for linguists: an introduction using R. Routledge.
Godoy, M. (2021). Estatística para as ciências da linguagem. Youtube. Disponível em https://abre.ai/estatistica-linguistas
Lima Jr., R.; Garcia, G.; Angele, B. (2020). Introdução a modelos de regressão em R. Disponível em https://www.youtube.com/playlist?list=PL3Qku9eEGkK1TF274nuIva85i4RaeIvOw
Godoy, M. C. (2019). Introdução aos modelos lineares mistos para os estudos da linguagem. PsyArXiv. https://doi.org/10.17605/OSF.IO/9T8UR. Disponivel em https://mahayana.me/mlm/
Sobre alguns problemas com análises quantitativas e como contorná-los
Ananias, T. C. (2024). Iconicidade no léxico do português brasileiro. Dissertação de Mestrado. Universidade Federal do Rio Grande do Norte.
Arantes, P. Lima Jr. R. (no prelo) [Título a definir: curso de introdução à estatística descritiva]. Editora Parábola.
Duchon, A., Perea, M., Sebastián-Gallés, N., Marti, A. T., and Carreiras, M. (2013). Espal: One-stop shopping for spanish word properties. Behavior Research Methods, 45:1246–1258.
Godoy, M. C. Guimarães, M. P. (2024) Métodos experimentais em pesquisa linguística. In: Rodrigues, Passeggi, Campos, Duque e Silva (orgs.). Metodologia da pesquisa em linguística teórica, descritiva e experimental. Natal: EDUFRN.
Estivalet G.L., Meunier F. (2015) The Brazilian Portuguese Lexicon: An Instrument for Psycholinguistic Research. PLoS ONE 10(12): e0144016. https://doi.org/10.1371/journal.pone.0144016